package cn.tedu.sp03.user.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import com.fasterxml.jackson.core.type.TypeReference;

import cn.tedu.sp01.pojo.User;
import cn.tedu.sp01.service.UserService;
import cn.tedu.web.util.JsonUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RefreshScope
public class UserServiceImpl implements UserService {
	@Value("${sp.user-service.users}")//从classpath:application.yml取出并赋值
	private String usersJson;
	/**
	 * 根据用户id获取某个User对象
	 * @param id
	 * @return
	 */
	@Override
	public User getUser(Integer id) {
		log.info("users json string : "+usersJson);
		//JsonUtil是sp01-common里自定义的工具类.TypeReference依赖jsckson,给定了目标类型
		//把usersJson转为List<User>对象list
		List<User> list = JsonUtil.from(usersJson, new TypeReference<List<User>>() {});
		for (User u : list) {
			if (u.getId().equals(id)) {
				return u;
			}
		}
		//如果classpath:application.yml提供的假数据里没有找给匹配的,就造一个User对象出来
		return new User(id, "name-"+id, "pwd-"+id);
	}
	/**
	 * 根据用户id对应的User对象,增加其积分score
	 * @param id
	 * @param score
	 */
	@Override
	public void addScore(Integer id, Integer score) {
		// 这里增加积分
		log.info("user "+id+" - 增加积分 "+score);
	}

}
